# -*- coding=utf-8 -*-
# 报数序列是一个整数序列，按照其中的整数的顺序进行报数，得到下一个数。其前五项如下：
# 1.     1
# 2.     11
# 3.     21
# 4.     1211
# 5.     111221
# 1 被读作  "one 1"  ("一个一") , 即 11。
# 11 被读作 "two 1s" ("两个一"）, 即 21。
# 21 被读作 "one 2",  "one 1" （"一个二" ,  "一个一") , 即 1211

# 给定一个正整数 n（1 ≤ n ≤ 30），输出报数序列的第 n 项
# 注意：整数顺序将表示为一个字符串
# 示例 1:
# 输入: 1
# 输出: "1"

# 示例 2:
# 输入: 4
# 输出: "1211"

## 一次通过击败20%，还可以的嘛！！
# class Solution(object):
#     def countAndSay(self, n):
#         """
#         :type n: int
#         :rtype: str
#         """
#         count = "1";
#         while n > 1:
#             index = 0;
#             same = 1;
#             temp = "";

#             while True:
#                 c = count[index];
#                 next_c = "" if index + 1 > len(count) - 1 else count[index + 1];
#                 if next_c == "":
#                     temp += ("%d" % same + c);
#                     break;
#                 index += 1;
#                 if next_c == c:
#                     same += 1;
#                 else:
#                     temp += ("%d" % same + c);
#                     same = 1;

#             n -= 1;
#             count = temp;

#         return count;








# # 排名第一的解决方案，应该是同一思路
# class Solution(object):
#     def countAndSay(self, n):
#         """
#         :type n: int
#         :rtype: str
#         """
#         def get_next_str(res):
#             res += '$'; # 字符串结束标志
#             pre_c = '';
#             tmp_res = '';
#             for c in res:
#                 if c != pre_c:
#                     if pre_c:
#                         tmp_res += (str(count) + pre_c);
#                     count = 1;
#                     pre_c = c;
#                 else:
#                     count += 1;
#             return tmp_res;
        
#         res = '1';
#         for i in range(n-1):
#             res = get_next_str(res);
        
#         return res;

t = Solution();
print t.countAndSay(30);